home *** CD-ROM | disk | FTP | other *** search
/ PCMania 53 / PCMania CD53_1.iso / pcmania / prog53 / borland / 002win95.c next >
C/C++ Source or Header  |  1996-06-30  |  4KB  |  141 lines

  1. /****************************************************\
  2. *                                                    *
  3. *   002WIN95.C                                       *
  4. *   Archivo con las funciones obligatorias.          *
  5. *   Implementaci≤n de una ventana base.              *
  6. *                                                    *
  7. *   I±aki Otero. Alcorc≤n, 1996.                     *
  8. *                                                    *
  9. \****************************************************/
  10.  
  11. // Archivo de cabecera de nuestro programa
  12. #include "002WIN95.H"
  13.  
  14. /*-------------------------- HANDLES Y VARIABLES ---*/
  15.  
  16. // Variable con el nombre que le vamos
  17. // a dar a la clase de nuestra ventana
  18. char VentBase[] = "VENTANA_BASE" ;
  19.  
  20. /*--------------- FUNCION PRINCIPAL DEL PROGRAMA ---*/
  21.  
  22. // Para evitar mensajes de parßmetros no utilizados
  23. #pragma argsused
  24.  
  25. // Funci≤n principal
  26. int WINAPI WinMain(HINSTANCE hInstance,
  27.                         HINSTANCE hPrevInstance,
  28.                         LPSTR lpCmdLine,
  29.                   int nCmdShow)
  30. {
  31.  
  32.    HWND hwnd ;       // Handle de la ventana principal
  33.     MSG msg ;         // Estructura del mensaje
  34.    WNDCLASSEX wcx ;    // Estructura de la
  35.                            // clase de la ventana
  36.  
  37.     // Rellenamos la estructura de la clase
  38.    // de la ventana para definirla
  39.  
  40.    // Toma el tama±o de la estructura
  41.       wcx.cbSize= sizeof(WNDCLASSEX) ;
  42.    // Toma los valores mßs usuales
  43.     wcx.style = CS_HREDRAW | CS_VREDRAW ;
  44.    // Funci≤n del procedimiento de ventana
  45.     wcx.lpfnWndProc = WinProc ;
  46.    // Informaci≤n adicional de la clase
  47.     wcx.cbClsExtra = 0 ;
  48.    // Informaci≤n adicional de la ventana
  49.    wcx.cbWndExtra = 0 ;
  50.    // Instancia actual de la aplicaci≤n
  51.     wcx.hInstance = hInstance ;
  52.    // Icono grande con el logo de Windows
  53.     wcx.hIcon = LoadIcon(NULL, IDI_WINLOGO) ;
  54.    // cursor de flecha blanca
  55.     wcx.hCursor = LoadCursor(NULL, IDC_ARROW) ;
  56.    // fondo blanco
  57.    wcx.hbrBackground = (HBRUSH)
  58.                                GetStockObject(WHITE_BRUSH);
  59.    // Todavφa no hay Men·
  60.    wcx.lpszMenuName  = NULL ;
  61.    // Nombre de la Clase
  62.     wcx.lpszClassName = VentBase ;
  63.    // Icono peque±o con el logo de Windows
  64.    wcx.hIconSm = LoadIcon(NULL, IDI_WINLOGO) ;
  65.  
  66.     // Registramos la clase de la ventana.
  67.    if(!RegisterClassEx(&wcx)) return (FALSE) ;
  68.  
  69.     // Creamos la ventana
  70.     hwnd = CreateWindowEx(
  71.        WS_EX_OVERLAPPEDWINDOW, // estilo extendido
  72.        VentBase,         // clase de nuestra ventana
  73.         "Nuestra Ventana Base",    // tφtulo de la ventana
  74.         WS_OVERLAPPEDWINDOW,    // estilo de la ventana
  75.         CW_USEDEFAULT,    // posici≤n horizontal(coord. X)
  76.         CW_USEDEFAULT, // posici≤n vertical  (coord. Y)
  77.         CW_USEDEFAULT, // ancho de la ventana
  78.         CW_USEDEFAULT, // alto de la ventana
  79.         NULL,                // ventana padre, no existe
  80.         NULL,                // a·n no existe el men·
  81.         hInstance,        // instancia actual
  82.         NULL) ;            // no hay mßs informaci≤n
  83.  
  84.     // Si no se puede crear la ventana, salimos
  85.     if(!hwnd) return (FALSE) ;
  86.  
  87.     // La ventana estß creada,
  88.    // pero hay que hacerla visible
  89.  
  90.     // Hacemos visible la ventana
  91.     ShowWindow(hwnd, nCmdShow) ;
  92.  
  93.     // Actualizamos la ventana
  94.    UpdateWindow(hwnd) ;
  95.  
  96.     // Bucle de mensajes
  97.  
  98.     // Leemos los mensajes
  99.    while (GetMessage(&msg, NULL, 0, 0))
  100.     {
  101.         // Convertimos las teclas
  102.        TranslateMessage(&msg) ;
  103.  
  104.         // Devolvemos el control a Windows 95
  105.       DispatchMessage(&msg) ;
  106.     }
  107.     // Devuelve el valor recibido de PostQuitMessage
  108.    return (msg.wParam) ;
  109. }
  110.  
  111. /*--------- FUNCION DEL PROCEDIMIENTO DE VENTANA ---*/
  112.  
  113. long CALLBACK WinProc(HWND hwnd, UINT message,
  114.                              WPARAM wParam, LPARAM lParam)
  115. {
  116.     switch(message)
  117.     {
  118.  
  119.         // Terminamos el programa
  120.       case WM_DESTROY:
  121.  
  122.           PostQuitMessage(0) ;
  123.          break ;
  124.  
  125.         // Al Windows95 se le da total libertad para
  126.       // que procese todos los mensajes que no estΘn
  127.       // dentro de este bucle switch, o sea que los
  128.       // mensajes que no hemos tratado se los dejamos
  129.       // a Windows 95
  130.         default :
  131.  
  132.             // devolvemos los parßmetros recibidos
  133.              return DefWindowProc(hwnd, message,
  134.                                      wParam, lParam) ;
  135.     }
  136.    return 0 ;
  137. }
  138.  
  139. /*------------------------------ FIN DEL ARCHIVO ---*/
  140.  
  141.